package com.hcryan.djm.feign.response;

import lombok.Data;

import java.util.List;

/**
 * @author ryanwdj
 * @since 2025/2/21
 */
@Data
public class LocationSearchResp {
    /**
     * 本次API访问状态，如果成功返回0，如果失败返回其他数字。
     */
    private int status;
    /**
     * 对API访问状态值的英文说明，如果成功返回ok，并返回结果字段，如果失败返回错误说明。
     */
    private String message;
    /**
     * POI检索总数，开发者请求中设置了page_num字段才会出现total字段。出于数据保护目的，单次请求total最多为150。
     */
    private int total;
    /**
     * region_type 行政区划类型;
     * address_type 结构化地址类型;
     * poi_type poi类型;
     * city_type 城市类型
     */
    private String result_type;
    /**
     * 返回的结果
     */
    private List<Result> results;

    @Data
    public static class Result {
        /**
         * poi名称
         */
        private String name;
        /**
         * poi经纬度坐标
         */
        private Location location;
        /**
         * poi地址信息
         */
        private String address;
        /**
         * 所属省份
         */
        private String province;
        /**
         * 所属城市
         */
        private String city;
        /**
         * 所属区县
         */
        private String area;
        /**
         * 行政区划代码
         */
        private int adcode;
        /**
         * poi电话信息
         */
        private String telephone;
        /**
         * poi的唯一标识，可用于详情检索
         */
        private String uid;
        /**
         * POI的状态：
         * 空（代表正常营业）
         * 推算位置（代表开放/营业/办公状态可能有变化）
         * 暂停营业
         * 可能已关闭
         * 已关闭
         * 注意：该功能为高级付费功能，您可提交工单咨询
         */
        private String status;
        /**
         * 街景图id
         */
        private String street_id;
        /**
         * 是否有详情页：1有，0没有
         */
        private String detail;
        /**
         * poi的扩展信息，仅当scope=2时，显示该字段，不同的poi类型，显示的detail_info字段不同。
         */
        private DetailInfo detail_info;
    }


    @Data
    public static class DetailInfo {
        /**
         * POI展示分类（细致分类）
         */
        private String classified_poi_tag;
        /**
         * 距离中心点的距离，圆形区域检索时返回
         */
        private int distance;
        /**
         * 所属分类，如hotel、cater。
         */
        private String type;
        /**
         * 标签
         */
        private String tag;
        /**
         * 标签细分解释，比如停车场标签（地上停车场/地下停车场），知名景区标签（几A级景区），酒店标签（什么类型酒店）等
         */
        private String label;
        /**
         * POI对应的导航引导点坐标。大型面状POI的导航引导点，一般为各类出入口，方便结合导航、路线规划等服务使用
         */
        private Location navi_location;
        /**
         * poi别名
         */
        private List<String> alias;
        /**
         * poi的详情页
         */
        private String detail_url;
        /**
         * poi子点数据，若某poi无子点，该字段为空
         */
        private List<PoiChild> children;
        /**
         * poi商户的价格
         */
        private String price;
        /**
         * 营业时间
         */
        private String shop_hours;
        /**
         * 总体评分
         */
        private String overall_rating;
        /**
         * 口味评分
         */
        private String taste_rating;
        /**
         * 服务评分
         */
        private String service_rating;
        /**
         * 环境评分
         */
        private String environment_rating;
        /**
         * 星级（设备）评分
         */
        private String facility_rating;
        /**
         * 卫生评分
         */
        private String hygiene_rating;
        /**
         * 技术评分
         */
        private String technology_rating;
        /**
         * 图片数
         */
        private String image_num;
        /**
         * 团购数
         */
        private int groupon_num;
        /**
         * 优惠数
         */
        private int discount_num;
        /**
         * 评论数
         */
        private String comment_num;
        /**
         * 收藏数
         */
        private String favorite_num;
        /**
         * 签到数
         */
        private String checkin_num;
        /**
         * poi对应的品牌（如加油站中的『中石油』、『中石化』）
         */
        private String brand;
        /**
         * poi标签信息
         */
        private String content_tag;
        /**
         * poi图片的下载链接。注意：该功能为高级付费功能，您可提交工单咨询。
         */
        private List<String> photos;
    }


    @Data
    public static class PoiChild {
        /**
         * poi子点的唯一标示，可用于详情检索
         */
        private String uid;
        /**
         * poi子点名称
         */
        private String name;
        /**
         * poi子点简要名称
         */
        private String show_name;
        /**
         * poi子点类别
         */
        private String tag;
        /**
         * poi子点坐标
         */
        private Location location;
        /**
         * poi子点地址
         */
        private String address;
    }
}
